package com.ai.emall.service.impl;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ai.emall.bean.gbean.MallProductModule;
import com.ai.emall.bean.gbean.MallProductModuleExample;
import com.ai.emall.dao.gdao.MallProductModuleMapper;
import com.ai.emall.service.interfaces.IMallProductModuleSV;
import com.ai.emall.utils.constants.SysExceptCodeConstants;
import com.ai.emall.utils.exception.BusinessException;
import com.ai.emall.utils.util.CollectionUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@Service
public class MallProductModuleSVImpl implements IMallProductModuleSV {
	@Autowired
	private MallProductModuleMapper mallProductModuleMapper;
	@Override
	public long getMaxSortByModuleId(String moduleId,String status)throws Exception{
		if(StringUtils.isBlank(moduleId))
			throw new BusinessException(SysExceptCodeConstants.Special.PARAM_IS_NULL, "参数moduleId不能为空");
		MallProductModuleExample moduleExample = new MallProductModuleExample();
		MallProductModuleExample.Criteria sql = moduleExample.createCriteria();
		sql.andModuleIdEqualTo(moduleId);
		if(status!=null)
			sql.andStatusEqualTo(status);
		moduleExample.setOrderByClause("module_sort desc");
		List<MallProductModule> beans = mallProductModuleMapper.selectByExample(moduleExample);
		if(CollectionUtil.isEmpty(beans))
			return 0L;
		return beans.get(0).getModuleSort();
	}

	@Override
	public List<MallProductModule> getBeansByProductId(Long productId) throws Exception {
		if(productId==null)
			return null;
		MallProductModuleExample moduleExample = new MallProductModuleExample();
		MallProductModuleExample.Criteria sql = moduleExample.createCriteria();
		sql.andProductIdEqualTo(productId);
		return mallProductModuleMapper.selectByExample(moduleExample);
	}

	@Override
	public List<MallProductModule> getBeansByProductIds(List<Long> productIds) throws Exception {
		if(CollectionUtil.isEmpty(productIds))
			return null;
		MallProductModuleExample moduleExample = new MallProductModuleExample();
		MallProductModuleExample.Criteria sql = moduleExample.createCriteria();
		sql.andProductIdIn(productIds);
		return mallProductModuleMapper.selectByExample(moduleExample);
	}

	@Override
	public List<MallProductModule> getBeansByModuleIdAndStatus(String moduleId, String status) throws Exception {
		MallProductModuleExample moduleExample = new MallProductModuleExample();
		MallProductModuleExample.Criteria sql = moduleExample.createCriteria();
		sql.andModuleIdEqualTo(moduleId);
		sql.andStatusEqualTo(status);
		moduleExample.setOrderByClause("module_sort desc");
		return mallProductModuleMapper.selectByExample(moduleExample);
	}

	@Override
	public PageInfo<MallProductModule> getBeansByModuleIdAndStatus(String moduleId, String status, Integer pageNo,
			Integer pageSize) throws Exception {
		if(pageNo==null || pageSize == null)
			throw new BusinessException(SysExceptCodeConstants.Special.PARAM_IS_NULL, "分页参数不能为空");
		MallProductModuleExample moduleExample = new MallProductModuleExample();
		MallProductModuleExample.Criteria sql = moduleExample.createCriteria();
		sql.andModuleIdEqualTo(moduleId);
		sql.andStatusEqualTo(status);
		moduleExample.setOrderByClause("module_sort desc");
		//获取第pageNo页，pageSize条内容，默认查询总数count
		PageHelper.startPage(pageNo, pageSize);
		List<MallProductModule> mallProductModules = mallProductModuleMapper.selectByExample(moduleExample);
		return new PageInfo<MallProductModule>(mallProductModules);
	}


}
